package es.albarregas.dao;

import java.sql.SQLException;

import java.util.ArrayList;
import java.util.Collection;

import es.albarregas.modelo.Producto;
import es.albarregas.pojo.Categoria;

public class CategoriasDAO extends ConexionDAO {
    private static final String INSERT_STATEMENT = " INSERT into categorias (Codigo,Nombre) values(?,?);";

   
    private static final String DELETE = " DELETE from categorias where Codigo=?";

    private int error = 1;

    public Collection<Categoria> leerProducto(String clausulaWhere) {
	Collection<Categoria> lista = new ArrayList<Categoria>();
	try {
	    getConexion();
	    estamento = conexion.createStatement();
	    String cadenaSQL = "SELECT Codigo, Nombre FROM categorias "
		    + clausulaWhere;
	    System.out.println("Sentencia para buscar categorias-->"
		    + cadenaSQL);
	    resultado = estamento.executeQuery(cadenaSQL);
	    while (resultado.next()) {
		Categoria categoria = new Categoria();
		categoria.setCodigo(resultado.getString("Codigo"));
		categoria.setNombre(resultado.getString("nombre"));

		lista.add(categoria);
	    }
	} catch (SQLException ex) {
	    ex.printStackTrace();
	} finally {
	    cerrar();
	}
	System.out.println("Coleccion en CategoriasDAO " + lista.isEmpty());
	return lista;

    }

    public int crearCategoria(Categoria categoria) {

	int codigoSQL = 0;

	try {
	    getConexion();
	    estamento = conexion.createStatement();

	    preparada = conexion.prepareStatement(INSERT_STATEMENT);

	    preparada.setString(1, categoria.getCodigo());
	    preparada.setString(2, categoria.getNombre());
	    
	    System.out.println("Sentcia eliminar categoria-->"+preparada.toString());

	    preparada.executeUpdate();
	} catch (SQLException ex) {
	    ex.printStackTrace();
	    codigoSQL = ex.getErrorCode();
	    error = ex.getErrorCode();
	} finally {
	    cerrar();
	}

	return codigoSQL;

    }
    public int eliminarCategoria(String codigo){
	int codigoSQL = 0;
	try {
		getConexion();
		preparada = conexion.prepareStatement(DELETE);
		preparada.setString(1, codigo);		
		preparada.executeUpdate();
	} catch(SQLException ex){
		codigoSQL = ex.getErrorCode();
		ex.printStackTrace();
	} finally {
		cerrar();
	}
	return codigoSQL;
}
    public int actualizarCategoria(Categoria categoria,String codigoAntiguo){
	
	String UPDATE = "update categorias set Codigo=?,Nombre=? where Codigo=?";
	
	int codigoSQL = 0;
	
	try {
		getConexion();
		preparada = conexion.prepareStatement(UPDATE);
		preparada.setString(1, categoria.getCodigo());
		preparada.setString(2, categoria.getNombre());
		preparada.setString(3, codigoAntiguo);
		
		preparada.executeUpdate();
	} catch(SQLException ex){
		codigoSQL = ex.getErrorCode();
		ex.printStackTrace();
	} finally {
		cerrar();
	}
	return codigoSQL;
}

public int getError() {
	return error;
}

}
